package com.company.design.create.factory.method;

/**
 * @author yingfing
 * @create 2020--09--26 11:24
 * @describe 工厂方法模式
 */
public class Test {
    /**
     * 简单工厂模式有一个问题 : 类的创建依赖工厂类.
     * 1.也就是说 , 如果想要扩展程序 , 就必须对工厂类进行修改 , 违背了开闭原则.
     * 2.如何解决 ?
     * 创建一个工厂接口和创建多个工厂实现类,这样一旦需要增加新的功能,直接增加工厂类 就可以了,不需要修改之前的代码
     * 3.这就是 " 工厂方法模式 "
     */
    public static void main(String[] args) {
        Provider provider = new SendMailFactory();
        Sender sender = provider.produce();
        sender.send();
    }
}
/**
 * 总结 :
 * 1. 好处 : 扩展性较好 !
 * 2. 例如 : 如果你现在想要增加一个新功能 :
 * 法及时信息 , 则只需做一个实现类,实现 Sender 接口,同时做一个工厂类,实现 Provider 接口,就OK
 */